import java.util.Arrays;

public class Test1 {
    public static void main(String[] args) {
        int[] arr1 = {1,2,3,0,0,0};
        int[] arr2 = {2,5,6};
        merge(arr1,3,arr2,3);

    }
    //将两个有序数组合成一个新的有序数组
    public static void merge(int[] nums1, int m, int[] nums2, int n) {
        //判断特殊情况
        //如果nums1或nums2中没有数据，那么直接将另一个数组放入nums1中
        if (m == 0) {
            for (int i = 0; i < n; i++) {
                nums1[i] = nums2[i];
            }
            return;
        } else if (n == 0) {
            return;
        }
        //两个数组中都有数据
        int m1 = 0;
        int m2 = 0;
        int[] nums = new int[m + n];
        //遍历两个数组，将较小元素放到新的数组中
        for (int i = 0; i < m + n; i++) {
            if (m1 == m) {//nums1结束但是nums2没结束
                for (int j = m + m2; j < m + n; j++) {
                    nums[j] = nums2[m2];
                    m2++;
                }
                return;
            } else if (m2 == n) {//nums2结束但是nums1没结束
                for (int j = n + m2; j < m + n; j++) {
                    nums[j] = nums1[m1];
                    m1++;
                }
                return;
            }
            if (nums1[m1] <= nums2[m2]) {
                nums[i] = nums1[m1];
                m1++;
            } else {
                nums[i] = nums2[m2];
                m2++;
            }
        }
        //最后将新数组中的数据放到nums1中
        for (int i = 0; i < m + n; i++) {
            nums1[i] = nums[i];
        }
    }
}
